Übungen GdI WS 2016

Die Übungen in GdI sind freiwillig, werden aber dringend empfohlen. Kommen Sie so oft sie wollen in die Übung. Sorgen Sie rechtzeitig dafür, dass Sie mit dem aktuellen Stoff vertraut sind.

Übungs-Modus: Die Dozenten sind vor Ort und helfen bei Problemen.

  • Sie sind Studierende, keine Schüler mehr: Es gilt das Pull-, nicht das Push-Prinzip: Fragen Sie die Dozenten aktiv nach der Hilfe, die Sie konkret benötigen.
  • Die Dozenten bieten keine "Schatten-Vorlesung" an, erklären den Stoff aus der Vorlesung nicht noch einmal an der Tafel. Es muss in der Übung auch nicht an der Tafel vorgerechnet werden.
  • Bisweilen besteht die Hilfe, die wir Ihnen geben, auch in der Antwort: "Das sage ich Ihnen nicht, denn das können Sie selbst recherchieren. Aber ich helfe Ihnen, das zu recherchieren!"

Maxime unseres Handelns: Hilf mir, es selbst zu tun!

Die Übungen sind in zweiwöchigen "Übungsrunden" organisiert, in denen jeweils ein paar zusammenhängende Themen gemeinsam im Fokus stehen.

Übungsrunde 1, KW 42 + 43: semAuth2, html5

Lernziele:

  • Kennenlernen des eigenen Rechners als Werkstatt auf Basisniveau:
    • Wo liegen die Dateien?
    • Datei-Explorer-Ansicht einstellen
      • dass man die Dateiendungen sieht
      • Liste von Details incl. Zugriffszeit, Größe etc.
    • die wichtigsten Tastenkürzel statt Maus und Menü
  • Installation und Starten eines Java-Programms von der Konsole aus
  • eine einfache html5-Datei "zu Fuß" mit einem allround Programmier-Editor erzeugen

Schritt 1: semAuth2 installieren, test.mm übersetzen

siehe semAuth2 in GdI 2016

zip downloaden, entpacken

test.mm

  • übersetzen wie in der Doku angegeben
  • alternativ mit dem template simple.html übersetzen

Schritt 2: eigene Home-Seite in html5

Idee: In der eigenen Werkstatt ein kleines Werkstück herstellen (wirklich ganz "zu Fuß", ohne Entwicklungsumgebung, ohne XML-Struktureditor, ohne alles etc.)

Ziel: Eine eigene Homepage als "persönliche Visitenkarte" erzeugen, z.B. mit

  • Name
  • Wohnort im Semester / in der vorlesungsfreien Zeit
  • Interessen: Sport, Musik etc.
  • besondere Kenntnisse
  • (Keine eigene Idee? ggf. nach "Web Visitenkarte" googeln!)

Technik:

  • nur eine einzige Datei, mit eingebettetem CSS
  • Wer ein Bild einfügen will und/oder mit mehrern verlinkten Dateien arbeiten will/muss: html-Seite(n), Bilder und ggf. ein externes CSS alles zusammen in einen eigenen Ordner.
  • Satzspiegel (mehrspaltig etc.): Bitte zunächst mit Tabellen realisieren. (Das ist zwar veraltet, aber auch neue Techniken basieren letztlich oft auf dem Tabellenmodell, man muss es kennen.) Infos: https://wiki.selfhtml.org/wiki/HTML/Tabellen

Arbeitsplatz:

  • Editor links
  • Ansicht im Firefox rechts;
  • ggf. Windows CMD rechts unten

Editieren einer Datei mit notepad++, emacs oder einem anderen Programmier-Editor

  • Zeichensatz: wie kann man utf-8 oder latin manuell für die Datei einstellen?
  • emacs: M-x set-buffer-file-coding-system
  • notepad++: ???

Firefox

  • Datei im Dateisystem lokalisieren, laden
  • ggf. Zeichensatz einstellen: Firefox > Ansicht > Textcodierung
  • Strg-R: neu laden; Strg-u: Quelltext anschauen; Strg-Shift-C: Inspektor

Ausgangsbasis für das eigene Projekt: z.B.

Aufgaben zur Festigung des Einstiegs

Die folgenden Elemente, Attribute und CCS-Eigenschaften sollten Sie erklären und anwenden können:

  • doctype | html | head | body | meta | charset | utf-8 | title | lang | de | style | h1 | h2 | p | blockquote | q | ul | ol | li | dd | dt | div | table | tr | td | a | href | img | src | width | span | class | id | class | em | code | color | font-size | border | section | padding | margin

Diese Begriffe müssen Sie erklären können:

  • well formed | Attribut | Element | CSS

Diese Begriffe sollten Sie grob einordenen können:

  • header | footer | main | aside | flow content | phrasing content | sectioning content | heading content | metadata content

Mögliche Aufgaben zum Selbstlernen und zur (bitte rechtzeitigen: also jetzt!) Klausurvorbereitung:

  • Realisieren Sie Ihre persönliche Web-Visitenkarte als eine html5-Datei, in der sie möglichst viele dieser Elemente unterbringen. Sie dürfen sich bei der Realisierung gerne grob an der vorgegebenen Reihenfolge orientieren.
  • Erstellen Sie aus den folgenden Elementen, Attributen und CSS-Eigenschaften eine sinnvolle Mindmap. (Benutzen Sie für wiederholte Operationen - insbesondere zum Verschieben von Knoten und Teilbäumen - ausschließlich Tastaturkürzel. Benutzen Sie möglichst wenig die Maus.
  • Erstellen Sie aus der Mindmap einen Thesaurus!

Übungsrunde 2, KW 44 + 45: Zahlendarstellungen, binäres Rechnen

Übungsmaterial zu regex

Viele ausführliche Beispiele gibt es unter http://www.regular-expressions.info/examples.html

Inhalt einer Email analysieren

Liebe Freunde,

wir treffen uns also am 24.12.2016 um 15 Uhr zum gemeinsamen Aufwärmen. Es haben sich bisher angemeldet:

Max Mustermann, 0821 - 1234567, maxmustermann@gmx.de

Erika Mustermann, Erika123 AT inf DOT haw-landshut DOT de

Rosi 32 16 8, rosi@hat@ein@telefon

Nguyễn Hữu Trí 01677 987 65 43 21

Пётр Ильи́ч Чайко́вский

Überweist bitte eure Spenden an:

Ärzte ohne Grenzen

IBAN: DE72 3702 0500 0009 7097 00

BIC: BFSWDE33XXX

Mehr Info unter spenderservice@berlin.msf.org in Berlin!

herzliche Grüße, euer

Obmann Peter

Post: Peter Obmann, Hofacker 15, 84021 Landing

Apache Webserver Protokolldatei 1

127.0.0.1 - - [01/Dec/2015:10:02:55 +0100] "GET / HTTP/1.1" 200 3594 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:42.0) Gecko/20100101 Firefox/42.0"

127.0.0.1 - - [01/Dec/2015:10:02:55 +0100] "GET /icons/ubuntu-logo.png HTTP/1.1" 200 3688 "http://127.0.0.1/" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:42.0) Gecko/20100101 Firefox/42.0"

127.0.0.1 - - [01/Dec/2015:10:03:01 +0100] "GET /favicon.ico HTTP/1.1" 404 498 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:42.0) Gecko/20100101 Firefox/42.0"

127.0.0.1 - - [01/Dec/2015:10:04:17 +0100] "GET /~gdw HTTP/1.1" 404 492 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:42.0) Gecko/20100101 Firefox/42.0"

127.0.0.1 - - [01/Dec/2015:10:04:29 +0100] "GET /~gdi HTTP/1.1" 301 562 "-" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:42.0) Gecko/20100101 Firefox/42.0"

Apache Webserver Protokolldatei 2

[20/Nov/2016:20:58:59 +0100] 157.55.39.112 TLSv1 AES256-SHA "GET /~beste/Download_students/Skript%20SAW%20Theorie02.pdf HTTP/1.1" 47300 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

[20/Nov/2016:21:01:47 +0100] 157.55.39.112 TLSv1 AES256-SHA "GET /~dp/RIEMEN_DM1.pdf HTTP/1.1" 4432066 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

[20/Nov/2016:21:05:29 +0100] 157.55.39.112 TLSv1 AES256-SHA "GET /~mbl_x5/MBL_X5/Knowledge_files/Toyota%20verleast%20%c3%bcber%20150%20Plug-In-Hybrids.pdf HTTP/1.1" 352 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

[20/Nov/2016:21:18:38 +0100] 157.55.39.112 TLSv1 AES256-SHA "GET /~gleiss/psfiles/dv8/prws990.eps HTTP/1.1" 46395 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

[20/Nov/2016:21:20:18 +0100] 157.55.39.112 TLSv1 AES256-SHA "GET /robots.txt HTTP/1.1" 1047 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

[20/Nov/2016:21:20:55 +0100] 157.55.39.112 TLSv1 AES256-SHA "GET /~tzinser/download_students/WS%202013_2014%20Grundlagen%20der%20Betrieblichen%20Steuern/Grundlagen%20der%20Betrieblichen%20Steuern%20WS%202013_2014_2_gesamt%20%5BKompatibilit%C3%A4tsmodus%5D.pdf HTTP/1.1" 866871 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"

Adressbuch in CVS verwandeln

Aufgabenstellung

Gegeben ist eine Liste von Namen, wie man sie z.B. von der Website einer Hochschule mit einem einfachen Skript "scrapen" kann. Beispiel:

  • Prof. Dr. rer.-nat, Dr. h.c. mult. Dipl.-Ing. (FH) Karl-Ulrich Peter Brindl-Brösl
  • Prof. Dr. Max Mustermann
  • Пётр Ильи́ч Чайко́вский
  • Strauß Franz-Josef
  • Nguyễn Hữu Trí

Gesucht: Eine bereinigte Liste, in der die Namen im CSV-Format enthalten sind (und diem man deshalb direkt in eine Tabellenkalkulation importieren kann). Beispiel:

  • Brindl-Brösl ; Karl-Ulrich Peter ; Prof. Dr. rer.-nat, Dr. h.c. mult. Dipl.-Ing. (FH)
  • Mustermann ; Max ; Prof. Dr.
  • Чайко́вский ; Пётр Ильи́ч ;
  • Strauß ; Franz-Josef ;
  • Nguyễn ; Hữu-Ming Trí

Zu tun:

  • Es sind verschiedene regex entwickeln, die in den einzelnen Zeilen Titel, Vor- und Nachnamen entdecken können und in eine CSV-Zeile übersetzen können.
  • Es muss eine Strategie entwickelt werden, wie man diese verschiedenen regex nacheinander sinnvoll auf die Addressliste anwenden kann.
  • Klar: Ganz ohne menschliches Zutun geht es nicht: Denn wie sonst sollte man bei Namen wie "Peter Günther" oder "Nguyễn Hữu Trí" den Vor- vom Nachnamen unterscheiden können?

Arbeitsumgebung: Heute mal der ganz herkömmliche LibreOffice Writer. Denn auch der hat eine Regex-Engine, die sogar utf-8 kann.

So geht es

Strategie: ein Paragraphzeichen an den Anfang jeder Zeile stellen: Das ist dann ein zu konsumierendes Markierungszeichen mit der Bedeutung "noch zu bearbeiten" für uns.

Beispiel Search for Replace with
^(.+) § $1

Dann alle noch zu bearbeitenden Zeilen (erkennbar am Paragraphzeichen) nacheinander mit verschiedenen regex durchgehen. (Ggf. vorher Paragraphzeichen in denjenigen Zeilen manuell entfernen, wo keine Ersetzung stattfinden soll.)

Format 1: viele Titel, durch einen Klammerausdruck vom Namen zu unterscheiden

Titel Titel, Titel (woher) Vorname1 Vorname2 Familienname §(.+) (\(.+\)) ([\w -]+) ([\w-]+) f1; $4 ; $3 ; $1 $2

Format 2: viele Titel, ein einziger Vorname, ein Nachname

Titel Titel Titel Vorname Nachname §((.+) )?([\w-]+) ([\w-]+) f2; $4 ; $3 ; $1

Formatgruppe 3: keine Titel, nur Namen

Format 3a: Vorname Vorname Vorname Nachname

Vorname Vorname Nachname §((.+) )([\w-]+) f3a ; $2 ; $1

Format 3b, Bayerisch (und z.B. auch Chinesisch):

Nachname Vorname Vorname §([\w-]+) (.*) f3b ; $1 ; $2

Testdaten:

z.B. 'rauskopieren aus HAW LA > Fakultät Informatik > Personen

XSLT-Beispiele 2016-12-19

siehe xslt_2016-12-19